import { Square } from "./Square";
import { SquareGroup } from "./SquareGroup";

export interface IPoint {
  /** 逻辑横坐标 */
  readonly x: number;
  /** 逻辑纵坐标 */
  readonly y: number;
}

/** 小方块的控制展示隐藏器 */
export interface IViewer {
  /** 显示 */
  show(sq: Square): void;
  /** 移除 */
  remove(): void;
}

/** 方块组的形状 */
export type TShape = IPoint[];

/** 移动方向 */
export enum EMoveDirection {
  left,
  right,
  down,
}

/** 游戏状态 */
export enum EGameStatus {
  init,
  playing,
  pause,
  over,
}

/** 游戏的控制器 */
export interface IGameViewer {
  /**
   * @param teris 下一个方块对象
   */
  showNext(teris: SquareGroup): void;
  /**
   * @param teris 切换的方块对象
   */
  switch(teris: SquareGroup): void;
}
